Software applications, such as Voice-Over-IP (VoIP) call control as performed by a VoIP Media Gateway Controller (MGC), have been realized using an approach in which a high-level language is used to describe the data processing and message exchange behavior of the VoIP MGC. In a VoIP MGC, an execution engine accepts a high-level graph language file that is used by the execution engine to create internal data structures which realize the behaviors described in the input language file. The combination of the execution engine and the high-level graph language file (which describes the VoIP MGC behavior) results in a system that exhibits the desired VoIP MGC processing characteristics.
In such software applications, as well as other software applications, performing software upgrades typically requires that the system be brought down while the upgrade is performed, or, more commonly, requires redundant hardware to which system functions may be switched while the upgrade is performed. For example, where a system is implemented using redundant hardware, a secondary hardware element may protect a primary hardware element, both during failure conditions, as well as during software upgrades. Disadvantageously, implementation of systems using redundant hardware is expensive and, further, still requires a full switchover of system functionality during software upgrades.